Use of the World Wide Web continues to increase, as does the amount and variety of content that is available to its users. Users of the World Wide Web commonly use browsers (web browsers) implemented on a web-enabled computing device to access content. Such devices include personal computers, laptop computers, netbook computers, smartphones and cell phones, among a number of other possible devices. Such web browsers are configured to read programmatic code and render that code as web pages, which may include rendering both audio and visual content contained in various media files (e.g., image, video and audio files), as well as performing other functions defined in the programmatic code. Web pages are generally implemented using standard programming languages such as HTML, HTML5, CSS and JAVASCRIPT, among a number of other available programming languages.
Some browsers allow users to install add-ons (or extensions) to the browser, where such extensions add functionality to the browser and operate as an integrated part of the browser. For instance, an extension may provide a user access to its additional functionality by modifying a user-interface (UI) of the browser. As an example, a weather forecast extension may be added to a browser, where the extension provides easy access to weather information by adding an icon or a button to the UI of the browser. A user may then interact with the extension's button or icon (e.g., by clicking it or hovering over it with a pointing device) to obtain weather information, rather than having to browse to a weather related web page in order to obtain weather information.
Browser extensions are generally implemented using programmatic code that is written using the same programming languages that are used for implementing web pages. From a browser's perspective, extensions effectively function as web pages that are an integrated part of the browser once they are installed. By installing extensions that are of interest to him or her, a user can effectively create a custom browser that includes the functionality of the extensions they choose to install.
In certain embodiments, extensions installed in a browser run in an “open environment” where the extensions are able to read from and also write to, and/or modify, each other's programmatic code, which allows extensions to readily share information with each other and, if properly written, work in concert with one another. Such an approach, however, raises a number of concerns. For instance, poorly written extensions (e.g., extensions containing bugs) could inadvertently modify another extension or interfere with its operation and thus, modify one or more of the other extension's functions, or disable the other extension all together. Such situations may also affect the performance and/or functionality of the browser. Another concern presented by running extensions in an open environment is that a malicious actor could distribute an extension that masquerades as a legitimate extension but is configured to modify one or more other extensions that are installed in the browser to perform malicious acts. Such malicious acts may include collecting personal information and the sending that information to the malicious actor.
In order to address the concerns presented by running extensions in an open environment, a browser may run each of its installed extensions in an isolated process, where the individual extensions do not have the ability to read and write each other's programmatic code. While such an approach addresses the concerns discussed above, it presents other concerns. For instance, such an approach prevents legitimate, well-formed extensions from working cooperatively with each other. Thus, one extension cannot leverage the features of another extension and would need to include code for implementing features that it may otherwise leverage from other extensions. Accordingly, the time and cost for developing an extension that will operate in an isolated process may increase as compared to an extension that operates in a well-behaved, open environment.